package cn.com.surker.material.dao;

import cn.com.surker.material.entity.MainMaterialBill;
import cn.com.surker.material.vo.MainMaterialBillVo;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import org.springframework.data.repository.query.Param;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 主材材料结算信息表 Mapper 接口
 * </p>
 *
 * @author admin
 * @since 2024-12-03
 */
public interface MainMaterialBillDao extends BaseMapper<MainMaterialBill> {


    List<Map<String,Object>> getSupplierList(@Param("orgId")Long orgId);

    List<Map<String,Object>> getMaterialList(@Param("orgId")Long orgId);

    List<Map<String,Object>> getToDayList();

    /**
     * 批量新增
     * @param list
     * @return
     */
    Integer saveBatch(String dbCode,List<MainMaterialBill> list);

    /**
     * 根据属性查询供应商是否已添加购进统计
     * @param orgId
     * @param supplierId
     * @param materialId
     * @param transportId
     * @param type
     * @param priceType
     * @param takeTime
     * @param price
     * @return
     */
    MainMaterialBill findTakeSupplier(String dbCode,Long orgId, Long supplierId, Long materialId, Long transportId, Integer type,
                                      Integer priceType, String takeTime, Double price, String today);

    /**
     * 更新结算信息
     * @param dbCode
     * @param bill
     * @return
     */
    Integer updateCloudBill(String dbCode, @Param("bill") MainMaterialBill bill);

    /**
     * 根据条件查询吨位、价格汇总-
     * @param dbCode
     * @param queryWrapper
     * @return
     */
    List<MainMaterialBill> findBuySum(String dbCode,
        @org.apache.ibatis.annotations.Param(Constants.WRAPPER) Wrapper<MainMaterialBillVo> queryWrapper);

    /**
     * 分页查询结算数据
     * @param page
     * @param queryWrapper
     * @param <E>
     * @return
     */
    <E extends IPage<MainMaterialBillVo>> E findBuyPage(E page, String dbCode,
       @org.apache.ibatis.annotations.Param(Constants.WRAPPER) Wrapper<MainMaterialBillVo> queryWrapper);

    /**
     * 查询明细信息
     * @param dbCode
     * @param queryWrapper
     * @return
     */
    List<MainMaterialBillVo> findBuyPage(String dbCode,
     @org.apache.ibatis.annotations.Param(Constants.WRAPPER) Wrapper<MainMaterialBillVo> queryWrapper);

    /**
     * 根据ID更新结算数据
     * @param dbCode
     * @param bill
     * @return
     */
    Integer updateCloudExamineBill(String dbCode,  @Param("bill") MainMaterialBill bill);

    /**
     * 根据条件更新数据状态
     * @param dbCode
     * @param bill
     * @return
     */
    Integer updateCloudBillStatus(String dbCode,  @Param("bill") MainMaterialBill bill);

    MainMaterialBill findCloudById(String dbCode, Long id);

    /**
     * 查询是否审核
     * @param dbCode
     * @param orgId
     * @param today
     * @param isCheck
     * @param isFinance
     * @return
     */
    Integer findCheckTotal(String dbCode, Long orgId, String today, Integer isCheck, Integer isFinance);

    /**
     * 根据大类查询材料类型购进信息
     * @param dbCode
     * @param today
     * @param breedType
     * @return
     */
    List<MainMaterialBill> findBreedWeight(String dbCode, String today, Integer breedType);

}
